package com.team2.outpatient_sys.web.administrator;

import com.team2.outpatient_sys.pojo.Administrator;
import com.team2.outpatient_sys.pojo.Result;
import com.team2.outpatient_sys.service.AdministratorService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/administrator")
public class AdministratorController {
    @Autowired
    private AdministratorService administratorService;

    /**
     * 处理根据id修改管理员密码的请求的Controller
     * @param administrator 管理员信息修改内容的封装对象，包含需要修改的管理员信息的id和newPassword
     * @return 响应内容，修改管理员密码的结果封装的Result对象
     */
    @PutMapping
    public Result updatePasswordById(@RequestBody Administrator administrator) {
        boolean isUpdateSuccess = administratorService.updatePasswordById(administrator);
        return isUpdateSuccess ? new Result(200, "修改密码成功")
                : new Result(500, "修改密码时发生异常");
    }

    /**
     * 处理根据管理员id查询管理员的信息请求的Controller
     * @param adminId 管理员的id
     * @return 响应内容，根据id查询管理员信息结果封装的Result对象
     *         包含查询到的管理员信息封装的Administrator对象
     */
    @GetMapping("/id/{adminId}")
    public Result getById(@PathVariable Integer adminId) {
        Administrator administrator = administratorService.getById(adminId);
        Result result = new Result();
        if (administrator == null) {
            result.setCode(500);
            result.setMsg("根据id查询管理员信息时发生异常");
        } else {
            result.setCode(200);
            result.setMsg("根据id查询管理员信息成功");
            result.setData(administrator);
        }
        return result;
    }

    /**
     * 处理根据管理员username查询管理员的信息请求的Controller
     * @param username 管理员的用户名username
     * @return 响应内容，根据username查询管理员信息结果封装的Result对象
     *         包含查询到的管理员信息封装的Administrator对象
     */
    @GetMapping("/username/{username}")
    public Result getByUsername(@PathVariable String username) {
        Administrator administrator = administratorService.getByUsername(username);

        Result result = new Result();
        if (administrator == null) {
            result.setCode(500);
            result.setMsg("根据username查询管理员信息时发生异常");
        } else {
            result.setCode(200);
            result.setMsg("根据username查询管理员信息成功");
            result.setData(administrator);
        }
        return result;
    }
}
